1
La investigación de rendimiento
DSAI2202Lab 8: Composing Data Operations

El equipo de apoyo académico necesita una lista de matrículas activas cuyo rendimiento reciente ha disminuido. Compara a cada estudiante con su propio rendimiento anterior en el mismo curso.

Acuerda las reglas

  1. Usa dos periodos: anterior y reciente. Cada uno tiene dos evaluaciones con la misma ponderación.
  2. Requiere al menos dos puntuaciones no NULL en cada periodo antes de comparar los promedios.
  3. Calcula decline_points = earlier_avg - recent_avg.
  4. Una disminución de al menos 15 puntos significa Revisión. De lo contrario, una matrícula elegible tiene Sin alerta.
  5. Mantén Datos insuficientes por separado. Un cero es una puntuación válida; un NULL o un registro faltante no es un cero.

Prepara tu base de datos

Abre el archivo lab8_setup.sql de la carpeta del TA DSAI2202/lab8/ en pgAdmin y ejecuta el archivo completo. Vuelve a usar la configuración de conexión de la derecha siempre que abras una nueva conexión.

La configuración también proporciona performance_comparison, una consulta guardada llamada vista. Servirá de apoyo en ejercicios posteriores; no es una tabla adicional de resultados de evaluación almacenados.

✍️ Inspecciona antes de calcular
Inspecciona E01, E07, E08, E09 y E24. Decide cuáles tienen suficientes puntuaciones en ambos periodos. Explica por qué los ceros de E24 aportan evidencia más sólida que los valores NULL de E08.
Establecer esquema
SET search_path TO lab8;
Verificar recuentos
SET search_path TO lab8;

SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;
Inspeccionar evidencia
SET search_path TO lab8;

SELECT e.enrolment_id, e.student_id, e.course_code,
       r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
  ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;